﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace Modelo.Interface
{
   public interface IDalCliente
    {
        bool InsereCliente(Modelo.Cliente cliente);
        System.Collections.Generic.IList<Modelo.Cliente> ListaClientes();
        Modelo.Cliente RetornaClienteID(int id);
        bool UpdateCliente(Modelo.Cliente cliente);
        void ExcluiCliente(int id);
    }
   public interface IDalPercurso
   {
       bool InserePercurso(Modelo.Percurso Percurso);
       System.Collections.Generic.IList<Modelo.Percurso> ListaPercursos();
       Modelo.Percurso RetornaPercursoID(int id);
       bool UpdatePercurso(Modelo.Percurso Percurso);
       bool ExcluiPercurso(int id);

       bool InserePercurso<T>(T objdeteste);
       
   }

   public interface IDalCaminhao
   {
       bool InsereCaminhao(Modelo.Caminhao Caminhao);
       System.Collections.Generic.IList<Modelo.Caminhao> ListaCaminhaos();
       Modelo.Caminhao RetornaCaminhaoID(int id);
       bool UpdateCaminhao(Modelo.Caminhao Caminhao);
       bool ExcluiCaminhao(int id);
   }

   public interface IDalG
   {
       bool Insere<T, K>(T tipo,K basa) where K : IBaseBD;
       System.Collections.Generic.IList<K> ListaCaminhaos<T, K>() where K : IBaseBD;
       K RetornaCaminhaoID<K>(int id);
       bool UpdateCaminhao<T, K>(T Tipo) where K : IBaseBD;
       bool ExcluiCaminhao(int id);
   }
   public interface IBaseBD 
   { 
        IList<T> RetornaGeral<T>() where T : class,new() ;
         T RetornaBasePorID<T>(int id) where T : class,new();
        object RetornaInstancia<T>(T obj)where T : class,new();
   }



}
